From 9edc86ec21a0f008e82f0ec1721b23885824cf6e Mon Sep 17 00:00:00 2001 From: Maxime Nicco Date: Thu, 26 Jul 2012 18:05:51 +0200 Subject: [PATCH] HSV add test --- tests/Makefile.am | 1 + tests/hsva.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 tests/hsva.c diff --git a/tests/Makefile.am b/tests/Makefile.am index 02a69fa..1776050 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -12,6 +12,7 @@ C_TESTS = \ extract \ floatclamp \ float-to-8bit \ + hsva \ types \ palette \ extract \ diff --git a/tests/hsva.c b/tests/hsva.c new file mode 100644 index 0000000..b98b9ef --- /dev/null +++ b/tests/hsva.c @@ -0,0 +1,112 @@ +/* babl - dynamically extendable universal pixel conversion library. + * Copyright (C) 2012, Maxime Nicco + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see + * . + */ + + /* + * Adding test fo hsva colorspace + * + * The test is at 0.001 precision + */ + +#include "config.h" +#include +#include +#include +#include +#include "babl.h" + +#define CHECK_CONV(test_name, componenttype, src_fmt, dst_fmt, src_pix, expected_pix) \ + { \ + const Babl *fish; \ + int i; \ + fish = babl_fish (src_fmt, dst_fmt); \ + if (!fish) \ + { \ + printf (" %s failed to make fish\n", test_name); \ + OK = 0; \ + } \ + for (i = 0; i < sizeof(src_pix)/sizeof(src_pix[0]); i ++) \ + { \ + int c;\ + componenttype result[10]; \ + babl_process (fish, src_pix[i], result, 1); \ + for (c = 0; c < sizeof(expected_pix[i])/sizeof(expected_pix[i][0]); c++) \ + if (fabs(result[c] - expected_pix[i][c]) > 0.001) \ + { \ + printf (" %s failed #%i[%i] got %lf expected %lf\n", test_name, i, c, result[c], expected_pix[i][c]); \ + OK = 0; \ + } \ + } \ + } + + +int +main (int argc, + char **argv) +{ + int OK = 1; + + babl_init (); + + { + { + float in[][4] = {{ 1.0, 1.0, 1.0, 1.0 }, { 0.5, 0.5, 0.5, 1.0}, { 0.0, 0.0, 0.0, 1.0}, + { 1.0, 0.0, 0.0, 1.0 }, { 0.75, 0.75, 0.0, 1.0}, { 0.0, 0.5, 0.0, 1.0}, + { 0.5, 1.0, 1.0, 1.0 }, { 0.5, 0.5, 1.0, 1.0}, { 0.75, 0.25, 0.75, 1.0}, + { 0.628, 0.643, 0.142, 1.0 }, {0.255, 0.104, 0.918, 1.0}, {0.116, 0.675, 0.255, 1.0}, + { 0.941, 0.785, 0.053, 1.0 }, {0.704, 0.187, 0.897, 1.0}, {0.931, 0.463, 0.316, 1.0}, + { 0.998, 0.974, 0.532, 1.0 }, {0.099, 0.795, 0.591, 1.0}, {0.211, 0.149, 0.597, 1.0}}; + + float out[][4] = {{ 0.0, 0.0, 1.0, 1.0 }, { 0.0, 0.0, 0.5, 1.0}, { 0.0, 0.0, 0.0, 1.0}, + { 0.0, 1.0, 1.0, 1.0 }, { 60.0, 1.0, 0.75, 1.0}, { 120.0, 1.0, 0.5, 1.0}, + { 180.0, 0.5, 1.0, 1.0 }, { 240.0, 0.5, 1.0, 1.0}, { 300.0, 0.666, 0.75, 1.0}, + { 61.796, 0.779, 0.643, 1.0 }, {251.130, 0.887, 0.918, 1.0}, {134.919, 0.828, 0.675, 1.0}, + { 49.459, 0.944, 0.941, 1.0 }, {283.690, 0.792, 0.897, 1.0}, { 14.341, 0.661, 0.931, 1.0}, + { 56.909, 0.467, 0.998, 1.0 }, {162.413, 0.875, 0.795, 1.0}, {248.303, 0.75, 0.597, 1.0}}; + + CHECK_CONV("rgba to hsva ", float, + babl_format("RGBA float"), + babl_format("HSVA float"), + in, out); + } + + { + float in[][4] = {{ 0.0, 0.0, 1.0, 1.0 }, { 0.0, 0.0, 0.5, 1.0}, { 0.0, 0.0, 0.0, 1.0}, + { 0.0, 1.0, 1.0, 1.0 }, { 60.0, 1.0, 0.75, 1.0}, { 120.0, 1.0, 0.5, 1.0}, + { 180.0, 0.5, 1.0, 1.0 }, { 240.0, 0.5, 1.0, 1.0}, { 300.0, 0.666, 0.75, 1.0}, + { 61.796, 0.779, 0.643, 1.0 }, {251.130, 0.887, 0.918, 1.0}, {134.919, 0.828, 0.675, 1.0}, + { 49.459, 0.944, 0.941, 1.0 }, {283.690, 0.792, 0.897, 1.0}, { 14.341, 0.661, 0.931, 1.0}, + { 56.909, 0.467, 0.998, 1.0 }, {162.413, 0.875, 0.795, 1.0}, {248.303, 0.75, 0.597, 1.0}}; + + float out[][4] = {{ 1.0, 1.0, 1.0, 1.0 }, { 0.5, 0.5, 0.5, 1.0}, { 0.0, 0.0, 0.0, 1.0}, + { 1.0, 0.0, 0.0, 1.0 }, { 0.75, 0.75, 0.0, 1.0}, { 0.0, 0.5, 0.0, 1.0}, + { 0.5, 1.0, 1.0, 1.0 }, { 0.5, 0.5, 1.0, 1.0}, { 0.75, 0.25, 0.75, 1.0}, + { 0.628, 0.643, 0.142, 1.0 }, {0.255, 0.104, 0.918, 1.0}, {0.116, 0.675, 0.255, 1.0}, + { 0.941, 0.785, 0.053, 1.0 }, {0.704, 0.187, 0.897, 1.0}, {0.931, 0.463, 0.316, 1.0}, + { 0.998, 0.974, 0.532, 1.0 }, {0.099, 0.795, 0.591, 1.0}, {0.211, 0.149, 0.597, 1.0}}; + + CHECK_CONV("hsva to rgba ", float, + babl_format("HSVA float"), + babl_format("RGBA float"), + in, out); + } + + } + + babl_exit (); + return !OK; +} -- 2.30.2